const { app, BrowserWindow, Menu } = require('electron');

// 保持对window对象的全局引用
let win = null;

// 优化启动配置
app.commandLine.appendSwitch('--disable-background-timer-throttling');
app.commandLine.appendSwitch('--disable-renderer-backgrounding');
app.commandLine.appendSwitch('--disable-backgrounding-occluded-windows');

// 应用准备就绪时创建窗口
app.whenReady().then(() => {
  // 创建浏览器窗口（优化配置）
  win = new BrowserWindow({
    width: 800,
    height: 600,
    show: false, // 先隐藏窗口，等加载完成再显示
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule: true,
      webSecurity: false
    }
  });

  // 预加载优化
  win.once('ready-to-show', () => {
    win.show();
    win.focus();
  });

  // 加载index.html文件
  win.loadFile('index.html');

  // 隐藏菜单栏
  Menu.setApplicationMenu(null);

  // 当窗口被关闭时
  win.on('closed', () => {
    win = null;
  });

  // 优化内存使用
  win.on('minimize', () => {
    win.webContents.setBackgroundThrottling(true);
  });

  win.on('restore', () => {
    win.webContents.setBackgroundThrottling(false);
  });
});

// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
  // 在 macOS 上，除非用户用 Cmd + Q 确定地退出，
  // 否则绝大部分应用及其菜单栏会保持激活。
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', () => {
  // 在macOS上，当单击dock图标并且没有其他窗口打开时，
  // 通常在应用程序中重新创建一个窗口。
  if (win === null) {
    createWindow();
  }
});

// 在这个文件中，你可以续写应用剩下主进程代码。
// 也可以拆分成几个文件，然后用 require 导入。